///////////////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------------
#ifndef __VERTEXINDEXBUFFER_H__
#define __VERTEXINDEXBUFFER_H__

#include <Config.h>

//-----------------------------------------------------------------------------

enum eIndexDataType
{
	eIDT_U_BYTE		= 1,
	eIDT_U_SHORT	= 2,
	eIDT_U_INT		= 4,
};

//-----------------------------------------------------------------------------

class VertexIndexBuffer
{
public:
	/*	Constructor. */
						VertexIndexBuffer();

	/*	Destructor. */
	virtual				~VertexIndexBuffer();

	void				ReleaseData();
	void				InitData(
		eIndexDataType	m_dataType,
		u32				noComponents
		);

	u32					GetNoComponents()
	{
		return m_noComponents;
	}
	
	u8					GetComponentSize()
	{
		return (u8)m_dataType;
	}
	
	eIndexDataType		GetComponentType()
	{
		return m_dataType;
	}
	GLenum				GetGLComponentType();
	
	u32					GetIndex(u32 index);

	void*				GetDataPtr()
	{
		return m_dataPtr;
	}

	void				calculateRange();
	u32					GetRangeMin();
	u32					GetRangeMax();

private:

	eIndexDataType				m_dataType;

	u32							m_noComponents;

	void*						m_dataPtr;

	bool						m_hasRange;
	u32							m_rangeMin;
	u32							m_rangeMax;
};

#endif // __VERTEXINDEXBUFFER_H__
//-----------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
